OBJECT Report 50002 Export Sales Price to Excel
{
  OBJECT-PROPERTIES
  {
    Date=07/03/15;
    Time=09:07:07;
    Modified=Yes;
    Version List=NAVW17.10;
  }
  PROPERTIES
  {
    CaptionML=[ENU=Export Sales Price to Excel;
               ENG=Export Sales Price to Excel];
    ProcessingOnly=Yes;
  }
  DATASET
  {
    { 1000000000;;DataItem;SalesPrice        ;
               DataItemTable=Table7002;
               OnPreDataItem=BEGIN
                               IF ISEMPTY THEN
                                 CurrReport.BREAK;

                               IF GUIALLOWED THEN BEGIN
                                 Window.OPEN(
                                   Text001 +
                                   '@1@@@@@@@@@@@@@@@@@@@@@@@@@\');
                                 Window.UPDATE(1,0);
                               END;

                               TotalRecNo := COUNT;
                               RecNo := 0;
                               RowNo := 0;

                               EnterHeader;
                             END;

               OnAfterGetRecord=BEGIN
                                  RecNo := RecNo + 1;
                                  IF GUIALLOWED THEN
                                    Window.UPDATE(1,ROUND(RecNo / TotalRecNo * 10000,1));

                                  RowNo := RowNo + 1;
                                  EnterCell(RowNo,1,"Item No.",FALSE,FALSE,'',TempExcelBuffer."Cell Type"::Text);
                                  EnterCell(RowNo,2,FORMAT("Sales Type"),FALSE,FALSE,'',TempExcelBuffer."Cell Type"::Text);
                                  EnterCell(RowNo,3,"Sales Code",FALSE,FALSE,'',TempExcelBuffer."Cell Type"::Text);
                                  EnterCell(RowNo,4,FORMAT("Starting Date"),FALSE,FALSE,'',TempExcelBuffer."Cell Type"::Date);
                                  EnterCell(RowNo,5,"Currency Code",FALSE,FALSE,'',TempExcelBuffer."Cell Type"::Text);
                                  EnterCell(RowNo,6,"Variant Code",FALSE,FALSE,'',TempExcelBuffer."Cell Type"::Text);
                                  EnterCell(RowNo,7,"Unit of Measure Code",FALSE,FALSE,'',TempExcelBuffer."Cell Type"::Text);
                                  EnterCell(RowNo,8,FORMAT("Minimum Quantity"),FALSE,FALSE,'',TempExcelBuffer."Cell Type"::Number);
                                  EnterCell(RowNo,9,FORMAT("Unit Price"),FALSE,FALSE,'',TempExcelBuffer."Cell Type"::Number);
                                  EnterCell(RowNo,10,FORMAT(0D),FALSE,FALSE,'',TempExcelBuffer."Cell Type"::Date);
                                  EnterCell(RowNo,11,FORMAT(0),FALSE,FALSE,'',TempExcelBuffer."Cell Type"::Number);
                                END;

               OnPostDataItem=BEGIN
                                IF GUIALLOWED THEN
                                  Window.CLOSE;

                                TempExcelBuffer.CreateBook(SalesPrice.TABLECAPTION);
                                TempExcelBuffer.WriteSheet(SalesPrice.TABLECAPTION,COMPANYNAME,USERID);
                                TempExcelBuffer.CloseBook;
                                TempExcelBuffer.OpenExcel;
                                TempExcelBuffer.GiveUserControl;
                              END;

               ReqFilterFields=Sales Type,Sales Code,Item No.,Variant Code,Unit of Measure Code,Starting Date }

  }
  REQUESTPAGE
  {
    PROPERTIES
    {
    }
    CONTROLS
    {
      { 7   ;0   ;Container ;
                  ContainerType=ContentArea }

    }
  }
  LABELS
  {
  }
  CODE
  {
    VAR
      TempExcelBuffer@1016 : TEMPORARY Record 370;
      Window@1000000003 : Dialog;
      TotalRecNo@1000000001 : Integer;
      RecNo@1000000002 : Integer;
      RowNo@1008 : Integer;
      Text001@1020 : TextConst 'ENU=Analyzing Data...\\;ENG=Analysing Data...\\';
      Text002@1000000000 : TextConst 'ENU=New %1;ENG=New %1';

    LOCAL PROCEDURE EnterHeader@1000000000();
    VAR
      Field@1000000003 : Record 2000000041;
    BEGIN
      RowNo := RowNo + 1;
      WITH SalesPrice DO BEGIN
        EnterCell(RowNo,1,FIELDCAPTION("Item No."),TRUE,TRUE,'',TempExcelBuffer."Cell Type"::Text);
        EnterCell(RowNo,2,FIELDCAPTION("Sales Type"),TRUE,TRUE,'',TempExcelBuffer."Cell Type"::Text);
        EnterCell(RowNo,3,FIELDCAPTION("Sales Code"),TRUE,TRUE,'',TempExcelBuffer."Cell Type"::Text);
        EnterCell(RowNo,4,FIELDCAPTION("Starting Date"),TRUE,TRUE,'',TempExcelBuffer."Cell Type"::Text);
        EnterCell(RowNo,5,FIELDCAPTION("Currency Code"),TRUE,TRUE,'',TempExcelBuffer."Cell Type"::Text);
        EnterCell(RowNo,6,FIELDCAPTION("Variant Code"),TRUE,TRUE,'',TempExcelBuffer."Cell Type"::Text);
        EnterCell(RowNo,7,FIELDCAPTION("Unit of Measure Code"),TRUE,TRUE,'',TempExcelBuffer."Cell Type"::Text);
        EnterCell(RowNo,8,FIELDCAPTION("Minimum Quantity"),TRUE,TRUE,'',TempExcelBuffer."Cell Type"::Number);
        EnterCell(RowNo,9,FIELDCAPTION("Unit Price"),TRUE,TRUE,'',TempExcelBuffer."Cell Type"::Number);
        EnterCell(RowNo,10,STRSUBSTNO(Text002,FIELDCAPTION("Starting Date")),TRUE,TRUE,'',TempExcelBuffer."Cell Type"::Text);
        EnterCell(RowNo,11,STRSUBSTNO(Text002,FIELDCAPTION("Unit Price")),TRUE,TRUE,'',TempExcelBuffer."Cell Type"::Number);
      END;
    END;

    LOCAL PROCEDURE EnterCell@3(RowNo@1000 : Integer;ColumnNo@1001 : Integer;CellValue@1002 : Text[250];Bold@1003 : Boolean;UnderLine@1004 : Boolean;NumberFormat@1005 : Text[30];CellType@1006 : Option);
    BEGIN
      TempExcelBuffer.INIT;
      TempExcelBuffer.VALIDATE("Row No.",RowNo);
      TempExcelBuffer.VALIDATE("Column No.",ColumnNo);
      TempExcelBuffer."Cell Value as Text" := CellValue;
      TempExcelBuffer.Formula := '';
      TempExcelBuffer.Bold := Bold;
      TempExcelBuffer.Underline := UnderLine;
      TempExcelBuffer.NumberFormat := NumberFormat;
      TempExcelBuffer."Cell Type" := CellType;
      TempExcelBuffer.INSERT;
    END;

    BEGIN
    END.
  }
  RDLDATA
  {
  }
}

OBJECT Report 50003 Import Sales Prices from Excel
{
  OBJECT-PROPERTIES
  {
    Date=07/03/15;
    Time=12:52:32;
    Modified=Yes;
    Version List=NAVW17.10;
  }
  PROPERTIES
  {
    CaptionML=[ENU=Import Cost Budget from Excel;
               ENG=Import Sales Prices from Excel];
    ProcessingOnly=Yes;
    OnPreReport=BEGIN
                  ServerFileName := FileMgt.UploadFile(Text006,ExcelFileExtensionTok);
                  IF ServerFileName = '' THEN
                      CurrReport.BREAK;

                  SheetName := TempExcelBuffer.SelectSheetsName(ServerFileName);
                  IF SheetName = '' THEN
                    CurrReport.BREAK;

                  TempExcelBuffer.DELETEALL;
                  TempExcelBuffer.OpenBook(ServerFileName,SheetName);
                  TempExcelBuffer.ReadSheet;

                  AnalyzeData;
                END;

    OnPostReport=BEGIN
                   TempExcelBuffer.DELETEALL;
                 END;

    UseRequestPage=No;
  }
  DATASET
  {
  }
  REQUESTPAGE
  {
    PROPERTIES
    {
      OnQueryClosePage=VAR
                         FileMgt@1001 : Codeunit 419;
                       BEGIN
                       END;

    }
    CONTROLS
    {
      { 9   ;0   ;Container ;
                  ContainerType=ContentArea }

    }
  }
  LABELS
  {
  }
  CODE
  {
    VAR
      TempExcelBuffer@1021 : Record 370;
      FileMgt@1000000000 : Codeunit 419;
      Window@1007 : Dialog;
      ServerFileName@1025 : Text;
      SheetName@1013 : Text[250];
      TotalRowNo@1009 : Integer;
      RowNo@1008 : Integer;
      Text006@1032 : TextConst 'ENU=Import Excel File;ENG=Import Excel File';
      Text007@1031 : TextConst 'ENU=Analyzing Data...\\;ENG=Analysing Data...\\';
      Text028@1024 : TextConst 'ENU=Importing from Excel worksheet;ENG=Importing from Excel worksheet';
      ExcelFileExtensionTok@1014 : TextConst '@@@={Locked};ENU=.xlsx;ENG=.xlsx';

    LOCAL PROCEDURE AnalyzeData@2();
    VAR
      SalesPrice@1000000000 : Record 7002;
    BEGIN
      TempExcelBuffer.RESET;
      IF TempExcelBuffer.ISEMPTY THEN
        CurrReport.BREAK;

      TempExcelBuffer.FINDLAST;
      IF TempExcelBuffer."Row No." = 1 THEN
        CurrReport.BREAK;

      IF GUIALLOWED THEN BEGIN
        Window.OPEN(
          Text007 +
          '@1@@@@@@@@@@@@@@@@@@@@@@@@@\');
        Window.UPDATE(1,0);
      END;

      TotalRowNo := TempExcelBuffer."Row No.";
      TempExcelBuffer.RESET;

      FOR RowNo := 2 TO TotalRowNo DO BEGIN
        IF GUIALLOWED THEN
          Window.UPDATE(1,ROUND(RowNo / TotalRowNo * 10000,1));
        WITH TempExcelBuffer DO BEGIN
          IF (GET(RowNo,11))AND("Cell Value as Text" <> '0')THEN BEGIN
            CLEAR(SalesPrice);

            //2 "Sales Type" (Mandatory)
            TempExcelBuffer.GET(RowNo,2);
            EVALUATE(SalesPrice."Sales Type","Cell Value as Text");
            SalesPrice.VALIDATE("Sales Type",SalesPrice."Sales Type");

            //3 "Sales Code" (Mandatory if not All Customers)
            IF SalesPrice."Sales Type" <> SalesPrice."Sales Type"::"All Customers" THEN BEGIN
              TempExcelBuffer.GET(RowNo,3);
              EVALUATE(SalesPrice."Sales Code","Cell Value as Text");
              SalesPrice.VALIDATE("Sales Code",SalesPrice."Sales Code");
            END;

            //1 "Item No." (Mandatory)
            TempExcelBuffer.GET(RowNo,1);
            EVALUATE(SalesPrice."Item No.","Cell Value as Text");
            SalesPrice.VALIDATE("Item No.",SalesPrice."Item No.");
            SalesPrice.TESTFIELD("Item No."); //Not Blank

            //6,"Variant Code" (Optional)
            IF (GET(RowNo,6))AND("Cell Value as Text" <> '')THEN BEGIN
              EVALUATE(SalesPrice."Variant Code","Cell Value as Text");
              SalesPrice.VALIDATE("Variant Code",SalesPrice."Variant Code");
            END;

            //7 "Unit of Measure Code" (Optional)
            IF (GET(RowNo,7))AND("Cell Value as Text" <> '')THEN BEGIN
              EVALUATE(SalesPrice."Unit of Measure Code","Cell Value as Text");
              SalesPrice.VALIDATE("Unit of Measure Code",SalesPrice."Unit of Measure Code");
            END;

            //10 "Starting Date" = New Starting Date
            IF (GET(RowNo,10))AND("Cell Value as Text" <> '')THEN BEGIN
              EVALUATE(SalesPrice."Starting Date","Cell Value as Text");
              SalesPrice.VALIDATE("Starting Date",SalesPrice."Starting Date");
            END;

            //5 "Currency Code" (Optional)
            IF (GET(RowNo,5))AND("Cell Value as Text" <> '')THEN BEGIN
              EVALUATE(SalesPrice."Currency Code","Cell Value as Text");
              SalesPrice.VALIDATE("Currency Code",SalesPrice."Currency Code");
            END;

            //8 "Minimum Quantity" (Optional)
            IF (GET(RowNo,8))AND("Cell Value as Text" <> '0')THEN BEGIN
              EVALUATE(SalesPrice."Minimum Quantity","Cell Value as Text");
              SalesPrice.VALIDATE("Minimum Quantity",SalesPrice."Minimum Quantity");
            END;

            //11 "Unit Price" = New Unit Price
            TempExcelBuffer.GET(RowNo,11);
            EVALUATE(SalesPrice."Unit Price","Cell Value as Text");
            SalesPrice.VALIDATE("Unit Price",SalesPrice."Unit Price");

            //Insert or Modify
            IF NOT SalesPrice.INSERT(TRUE)THEN
              SalesPrice.MODIFY(TRUE);
          END;
        END;
      END;

      IF GUIALLOWED THEN
        Window.CLOSE;
    END;

    BEGIN
    END.
  }
  RDLDATA
  {
  }
}

